ActionController::Routing::Routes.draw do |map|
  map.resources :produto_incentivados


  # OPTIMIZE segurança e performance. usar :only e :except onde for necessário
  map.resources :pleitos, :shallow => true, :member => {
                  :formalizacao => :get,
                  :requerimento => :get,
                  :cadastro_empreendimento => :get,
                  :form_caracterizacao => :get,
                  :documentos => :get,
                  :vistoria => :get,
                  :analise => :get,
                  :laudo => :get,
                  :portaria => :get,
                  :deliberacao => :get,
                  :oficio => :get,
                  :documentos_requeridos => :get,
                  :registrar_protocolo => :put,
                  :registrar_documentos_adicionais => :put,
                  :aceitar_inscricao => :put,
                  :rejeitar_inscricao => :put,
                  :aceitar_inscricao => :put,
                  :encaminhar_para_certificacao => :put,
                  :encaminhar_para_recomendacao => :put,
                  :encaminhar_para_deliberacao => :put,
                  :aprovar => :put,
                  :modificar_data_portaria => :put,
                  :modificar_data_laudo => :put,
                  :modificar_data_oficio_empresa => :put,
                  :modificar_data_oficio_empresa_liberacao => :put,
                  :modificar_data_oficio_receita => :put,
                  :modificar_data_oficio_bnb => :put,
                  :modificar_data_oficio_marinha => :put,
                  :voltar_para_analise => :put,
                  :arquivar => :put,
                  :distribuir => :put,
                  :sugestoes => :get } do |pleitos|

    pleitos.resource :caracterizacao, :except => [:index, :show, :destroy], :member => {:avaliacao => :get} do |car|
      # Redução
      car.resources :atividades, :member => {:registrar_analise => :put} do |atividades|
        atividades.resources :produtos, :has_many => :producoes, :member => {:registrar_analise => :put}
      end
      # Reinvestimento
      car.resources :depositos, :opcoes_dipj, :investimentos, :except => :show
      car.resources :documentos_fiscais, :only => [:edit, :update]
    end

    pleitos.resource :empreendimento do |e|
      e.resources :componentes_empreendimento, :as => 'componentes'
      e.resources :acionistas
      e.resources :ano_calendarios
      e.resources :beneficios, :member => {:registrar_analise => :put} do |beneficios|
        beneficios.resources :produto_incentivados, :member => {:registrar_analise => :put}
      end
      e.resource  :pessoa_juridica, :only => [:edit, :update]
    end

    pleitos.resources :documentos_apresentados, :only => [:index, :update]
    pleitos.resources :tramitacoes, :only => [:index, :show]
  end

  map.resources :analistas, :only => :index, :member => { :pleitos_em_analise => :get }

  map.resources :incentivos, :member => { :condicoes => :get }

  map.resources :analises,  :only => :update, :shallow => true do |ana|
    ana.resources :exigencias, :except => [:new, :edit, :show]
  end
  map.resources :vistorias, :only => :update, :shallow => true do |vis|
    vis.resources :fotos, :except => [:new, :edit, :show]
  end

  map.resources :areas, :municipios, :estados, :setores_economicos, :documentos,
                :tipos_precondicao, :precondicoes, :unidades_medida, :parametros, :pessoas_juridicas

  map.resources :users, :except => [:show, :destroy]

  # Login via Restfulx
  map.connect 'usuarios/entrar.fxml', :controller => 'sessions', :name_prefix => nil, :action => 'create',
                                      :conditions => { :method => :post }, :format => :fxml
  map.connect 'usuarios/sair.fxml',   :controller => 'sessions', :name_prefix => nil, :action => 'destroy',
                                      :conditions => { :method => :get }, :format => :fxml

  map.devise_for :users, :as => 'usuarios', :path_names => {
    :sign_in  => 'entrar',
    :sign_out => 'sair',
    :sign_up  => 'criar_conta',
    :password => 'senha',
    :unlock   => 'desbloquear'
  }

  map.profile '/perfil.:format', :controller => 'users', :action => 'profile'

  map.root :profile

  # INTRANET - Aplicação em Flex
  map.intranet  '/intranet', :controller => 'flex'

end
